/*
 * GUIView.java
 */

package gui;

import Toepen.LoungeFacade.FacadeGebruiker;
import Toepen.SpelFacade.ActieResult;
import Toepen.SpelFacade.ActieResultEnum;
import Toepen.SpelFacade.FacadeDeelnemer;
import Toepen.SpelFacade.FacadeDezeDeelnemer;
import Toepen.SpelFacade.FacadeKaart;
import Toepen.SpelFacade.FacadeKleur;
import Toepen.SpelFacade.FacadeWaarde;
import Toepen.SpelFacade.ISpelFacade;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import java.rmi.RemoteException;
import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.EnumMap;
import javax.swing.*;

import Toepen.SpelFacade.ISpelObserver;
import Toepen.SpelFacade.SpelObservable;
import javax.swing.border.Border;
import toepen.Deelnemer;

/**
 * Het scherm waarin het scherm gespeeld wordt
 */
public class GUIView extends FrameView {

    private EnumMap<FacadeKleur, String> kleuren;
    private EnumMap<FacadeWaarde, String> waardes;

    private FacadeKaart[] spelerKaarten;
    private ISpelFacade spelFacade;
    private FacadeGebruiker gebruiker;
    private int initialPlayerCount;
    private String[] namen;
    private SpelObserver _Observer;
    boolean quitter = false;
    private GUILounge lounge;
    private int aantalSpelers;

    /**
     * Constructor voor GUIView
     * @param lounge GUILounge waaruit dit spel opgestart is
     */
    public GUIView(GUILounge lounge) {
        super(lounge.getApplication());

        this.lounge = lounge;


        kleuren = new EnumMap<FacadeKleur, String>(FacadeKleur.class);
        waardes = new EnumMap<FacadeWaarde, String>(FacadeWaarde.class);

        kleuren.put(FacadeKleur.HARTEN, "H");
        kleuren.put(FacadeKleur.KLAVEREN, "K");
        kleuren.put(FacadeKleur.RUITEN, "R");
        kleuren.put(FacadeKleur.SCHOPPEN, "S");

        waardes.put(FacadeWaarde.AAS, "Aas");
        waardes.put(FacadeWaarde.ACHT, "8");
        waardes.put(FacadeWaarde.BOER, "Boer");
        waardes.put(FacadeWaarde.HEER, "Koning");
        waardes.put(FacadeWaarde.NEGEN, "9");
        waardes.put(FacadeWaarde.TIEN, "10");
        waardes.put(FacadeWaarde.VROUW, "Vrouw");
        waardes.put(FacadeWaarde.ZEVEN, "7");

        initComponents();

        // status bar initialization - message timeout, idle icon and busy animation, etc
        ResourceMap resourceMap = getResourceMap();
        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
        messageTimer = new Timer(messageTimeout, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statusMessageLabel.setText("");
            }
        });
        messageTimer.setRepeats(false);
        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
        for (int i = 0; i < busyIcons.length; i++) {
            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
        }
        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
            }
        });
        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
        statusAnimationLabel.setIcon(idleIcon);
        progressBar.setVisible(false);

        // connecting action tasks to status bar via TaskMonitor
        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                String propertyName = evt.getPropertyName();
                if ("started".equals(propertyName)) {
                    if (!busyIconTimer.isRunning()) {
                        statusAnimationLabel.setIcon(busyIcons[0]);
                        busyIconIndex = 0;
                        busyIconTimer.start();
                    }
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(true);
                } else if ("done".equals(propertyName)) {
                    busyIconTimer.stop();
                    statusAnimationLabel.setIcon(idleIcon);
                    progressBar.setVisible(false);
                    progressBar.setValue(0);
                } else if ("message".equals(propertyName)) {
                    String text = (String)(evt.getNewValue());
                    statusMessageLabel.setText((text == null) ? "" : text);
                    messageTimer.restart();
                } else if ("progress".equals(propertyName)) {
                    int value = (Integer)(evt.getNewValue());
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(false);
                    progressBar.setValue(value);
                }
            }
        });
    }

    /**
     * Koppelt de spelfacade en de gebruik aan deze GUI
     * @param spelFacade spelfacade waarmee het spel communiceert
     * @param gebruiker FacadeGebruiker die het spel speelt
     */
    public void setView(ISpelFacade spelFacade, FacadeGebruiker gebruiker)
    {
        this.spelFacade=spelFacade;
        this.gebruiker = gebruiker;

        try
        {
            _Observer=new SpelObserver(this);
            spelFacade.addObserver(_Observer, gebruiker);
            spelFacade.startSpel();
        }
        catch (Exception e)
        {
	        e.printStackTrace();
        }
    }

    /**
     * Functie die aangeroepen wordt zodra er in het domeinmodel een wijziging
     * in dit spel heeft plaatsgevonden door middel van de facade
     * @param observable SpelObservable met de wijzigingen
     */
    public void update(SpelObservable observable) {
       if (observable.getWinnaar() != null) {
           showWinner(observable);
       }
       
       if(observable.isSpelAfgelopen()) {
           lounge.eindeSpel(quitter);
       }

       updateGame(observable);
   }

   private void updateGame(SpelObservable observable) {
       FacadeDezeDeelnemer dezeDeelnemer = observable.getDezeDeelnemer();
       FacadeDeelnemer[] andereDeelnemers = observable.getAndereDeelnemers();

       butDelen.setEnabled(false);

       if(namen == null)
           namen = new String[observable.GetAantalDeelnemers()];

       if (getPlayerNumber(andereDeelnemers[0].getNaam()) > -1) {
           updatePlayerSelf(dezeDeelnemer);

           for (FacadeDeelnemer andereDeelnemer : andereDeelnemers) {
               updatePlayer(andereDeelnemer);
           }
       }
       else {
           initiatePlayerSelf(dezeDeelnemer.getNaam(), dezeDeelnemer.getIsAanBeurt(), dezeDeelnemer.getKaartenInHand());

           for (FacadeDeelnemer andereDeelnemer : andereDeelnemers) {
               initiatePlayer(andereDeelnemer.getNaam(), andereDeelnemer.getIsAanBeurt());
           }
       }
   }

   private void showWinner(SpelObservable observable) {
       if ((FacadeDeelnemer) observable.getDezeDeelnemer() == observable.getWinnaar()) {
           showWinningPlayerSelf(observable);
       }
   }

   private void showWinningPlayerSelf(SpelObservable observable) {
       // Andere spelers hebben dus niet gewonnen
       for (FacadeDeelnemer andereDeelnemer :
observable.getAndereDeelnemers()) {
           showOtherPlayerLose(andereDeelnemer);
       }

       setStatus(observable.getWinnaar().getNaam(), observable.getWinnaar().getStrafPunten(), 0, true, "Je hebt gewonnen en moet delen");
       enableButtons(false);
       butDelen.setEnabled(true);
   }

   private void showOtherPlayerLose(FacadeDeelnemer deelnemer) {
       setStatus(deelnemer.getNaam(), deelnemer.getStrafPunten(), 0, false, "Heeft verloren");
   }

   private void showWinningPlayer(SpelObservable observable) {
       // speler zelf heeft dus niet gewonnen
       setStatus(observable.getDezeDeelnemer().getNaam(), observable.getDezeDeelnemer().getStrafPunten(), 0, false, "Je hebt verloren");
       // een van de rest heeft gewonnen
       for (FacadeDeelnemer deelnemer : observable.getAndereDeelnemers()) {
           if (deelnemer == observable.getWinnaar()) {
               setStatus(deelnemer.getNaam(), deelnemer.getStrafPunten(), 0, true, "Heeft gewonnen en moet delen");
               continue;
           }
           // en de anderen niet
           showOtherPlayerLose(deelnemer);
       }
   }

    private Icon getUnknownCardImagePath() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

/*
    private void showPlayers(FacadeDezeDeelnemer playerSelf, ArrayList<FacadeDeelnemer> otherPlayers)
    {
        /* The playing is always arranged in such a way, that all players are spread out equally
         *
         * Je wil de hoofdspeler onderaan hebben, oftwel op 180
         *
         * Dus ik draai het resultaat gewoon uiteindelijk om om de x as
         * http://www.breem.nl/tech-themas/wiskunde/tt_goniometrie.htm
         */
    /*    float spreadAngle = 360 / (1 + otherPlayers.size());

        int diameter = ((mainPanel.WIDTH > mainPanel.HEIGHT) ? mainPanel.WIDTH : mainPanel.HEIGHT);

        for (int i = 0; i < 1 + otherPlayers.size(); i++)
        {
            double x = (diameter / 2) * Math.cos(i * spreadAngle);
            double y = (diameter / 2) * Math.sin(i * spreadAngle);

            if (i == 0)
            {
                // show player
                //showPlayer(playerSelf, x, y);
            }
            else
            {
                // show others
            }
        }
    }*/

    public void initiatePlayer(String naam, boolean isAanDeBeurt) //, int aantalSpelers)
    {
        for (int i = 0; i < namen.length; i++)
        {
            if (namen[i] == null)
            {
                namen[i] = naam;
                setStatus(naam, 0, 1, isAanDeBeurt, isAanDeBeurt ? "Is aan de beurt" : "Wacht op eerste kaart.");
                return;
            }
        }
    }

    private void updatePlayer(FacadeDeelnemer deelnemer)
    {
        ImageIcon empty = new ImageIcon(getCardImagePath("achterkant.png"));
        ImageIcon card1Icon = deelnemer.getAantalKaartenGespeeld() > 0 ? new ImageIcon(getCardImagePath(deelnemer.getKaartenGespeeld()[0].getKleur(), deelnemer.getKaartenGespeeld()[0].getWaarde())) : new ImageIcon(getCardImagePath("leeg.png"));
        ImageIcon card2Icon = deelnemer.getAantalKaartenGespeeld() > 1 ? new ImageIcon(getCardImagePath(deelnemer.getKaartenGespeeld()[1].getKleur(), deelnemer.getKaartenGespeeld()[1].getWaarde())) : new ImageIcon(getCardImagePath("leeg.png"));
        ImageIcon card3Icon = deelnemer.getAantalKaartenGespeeld() > 2 ? new ImageIcon(getCardImagePath(deelnemer.getKaartenGespeeld()[2].getKleur(), deelnemer.getKaartenGespeeld()[2].getWaarde())) : new ImageIcon(getCardImagePath("leeg.png"));
        ImageIcon card4Icon = deelnemer.getAantalKaartenGespeeld() > 3 ? new ImageIcon(getCardImagePath(deelnemer.getKaartenGespeeld()[3].getKleur(), deelnemer.getKaartenGespeeld()[3].getWaarde())) : new ImageIcon(getCardImagePath("leeg.png"));


        ImageIcon card1OngespeeldIcon = deelnemer.getAantalKaartenInHand() > 0 ? new ImageIcon(getCardImagePath("achterkant.png")) : new ImageIcon(getCardImagePath("leeg.png"));
        ImageIcon card2OngespeeldIcon = deelnemer.getAantalKaartenInHand() > 1 ? new ImageIcon(getCardImagePath("achterkant.png")) : new ImageIcon(getCardImagePath("leeg.png"));
        ImageIcon card3OngespeeldIcon = deelnemer.getAantalKaartenInHand() > 2 ? new ImageIcon(getCardImagePath("achterkant.png")) : new ImageIcon(getCardImagePath("leeg.png"));
        ImageIcon card4OngespeeldIcon = deelnemer.getAantalKaartenInHand() > 3 ? new ImageIcon(getCardImagePath("achterkant.png")) : new ImageIcon(getCardImagePath("leeg.png"));
        switch (getPlayerNumber(deelnemer.getNaam()))
        {
            case 0:
                // speler 1
                speler1gespeeldeKaart1.setIcon(card1Icon);
                speler1gespeeldeKaart2.setIcon(card2Icon);
                speler1gespeeldeKaart3.setIcon(card3Icon);
                speler1gespeeldeKaart4.setIcon(card4Icon);
                speler1ongespeeldeKaart1.setIcon(card1OngespeeldIcon);
                speler1ongespeeldeKaart2.setIcon(card2OngespeeldIcon);
                speler1ongespeeldeKaart3.setIcon(card3OngespeeldIcon);
                speler1ongespeeldeKaart4.setIcon(card4OngespeeldIcon);
                break;
            case 1:
                // speler 2
                speler2GespeeldeKaart1.setIcon(card1Icon);
                speler2GespeeldeKaart2.setIcon(card2Icon);
                speler2GespeeldeKaart3.setIcon(card3Icon);
                speler2GespeeldeKaart4.setIcon(card4Icon);
                speler2ongespeeldeKaart1.setIcon(card1OngespeeldIcon);
                speler2ongespeeldeKaart2.setIcon(card2OngespeeldIcon);
                speler2ongespeeldeKaart3.setIcon(card3OngespeeldIcon);
                speler2ongespeeldeKaart4.setIcon(card4OngespeeldIcon);
                break;
            case 2:
                // speler 3
                speler3gespeeldeKaart1.setIcon(card1Icon);
                speler3gespeeldeKaart2.setIcon(card2Icon);
                speler3gespeeldeKaart3.setIcon(card3Icon);
                speler3gespeeldeKaart4.setIcon(card4Icon);
                speler3ongespeeldeKaart1.setIcon(card1OngespeeldIcon);
                speler3ongespeeldeKaart2.setIcon(card2OngespeeldIcon);
                speler3ongespeeldeKaart3.setIcon(card3OngespeeldIcon);
                speler3ongespeeldeKaart4.setIcon(card4OngespeeldIcon);
                break;
            default:
        }
        setStatus(deelnemer.getNaam(), deelnemer.getStrafPunten(), deelnemer.getInzet(), deelnemer.getIsAanBeurt(), deelnemer.getIsAanBeurt() ? "Is aan de beurt" : "Wacht op andere speler.");
    }

    public void initiatePlayerSelf(String naam, boolean isAanDeBeurt, FacadeKaart[] kaartenInHand)
    {
        spelerKaarten = kaartenInHand;
        for (int i = 0; i < kaartenInHand.length; i++)
        {
            ImageIcon newIcon = new ImageIcon(getCardImagePath(kaartenInHand[i].getKleur(), kaartenInHand[i].getWaarde()));

            // below is just a dirty quickfix
            if (i == 0)
            spelerKaart1.setIcon(newIcon);
            else if (i == 1)
            spelerKaart2.setIcon(newIcon);
            else if (i == 2)
            spelerKaart3.setIcon(newIcon);
            else if (i == 3)
            spelerKaart4.setIcon(newIcon);
            // end fix

            if (spelerKaart1.getIcon() == null)
            {
                spelerKaart1.setIcon(newIcon);
            }
            else
                if (spelerKaart2.getIcon() == null)
            {
                spelerKaart2.setIcon(newIcon);
            }
            else if (spelerKaart3.getIcon() == null)
            {
                spelerKaart3.setIcon(newIcon);
            }
            else if (spelerKaart4.getIcon() == null)
            {
                spelerKaart4.setIcon(newIcon);
            }
        }
        setStatus(naam, 0, 1, isAanDeBeurt, isAanDeBeurt ? "Is aan de beurt" : "Wacht op eerste kaart.");
        enableButtons(isAanDeBeurt);
    }

    private void updatePlayerSelf(FacadeDezeDeelnemer playerSelf)
    {
        spelerKaarten = playerSelf.getKaartenInHand();
        for (int i = 0; i < playerSelf.getAantalKaartenInHand(); i++)
        {
            ImageIcon cardImageIcon = new ImageIcon(getCardImagePath(playerSelf.getKaartenInHand()[i].getKleur(), playerSelf.getKaartenInHand()[i].getWaarde()));

            switch (i)
            {
                case 0:
                {
                    spelerKaart1.setIcon(cardImageIcon);
                }
                case 1:
                {
                    spelerKaart2.setIcon(cardImageIcon);
                }
                case 2:
                {
                    spelerKaart3.setIcon(cardImageIcon);
                }
                case 3:
                {
                    spelerKaart4.setIcon(cardImageIcon);
                }
            }
        }

        for (int i = playerSelf.getAantalKaartenInHand(); i < 4; i++)
        {
            ImageIcon cardImageIcon = new ImageIcon(getCardImagePath("leeg.png"));

            switch(i)
            {
                case 0:
                {
                    spelerKaart1.setIcon(cardImageIcon);
                }
                case 1:
                {
                    spelerKaart2.setIcon(cardImageIcon);
                }
                case 2:
                {
                    spelerKaart3.setIcon(cardImageIcon);
                }
                case 3:
                {
                    spelerKaart4.setIcon(cardImageIcon);
                }
            }
        }

        for (int i = 0; i < playerSelf.getAantalKaartenGespeeld(); i++)
        {
            ImageIcon cardImageIcon = new ImageIcon(getCardImagePath(playerSelf.getKaartenGespeeld()[i].getKleur(), playerSelf.getKaartenGespeeld()[i].getWaarde()));

            switch (i)
            {
                case 0:
                {
                    spelerGespeeldeKaart1.setIcon(cardImageIcon);
                }
                case 1:
                {
                    spelerGespeeldeKaart2.setIcon(cardImageIcon);
                }
                case 2:
                {
                    spelerGespeeldeKaart3.setIcon(cardImageIcon);
                }
                case 3:
                {
                    spelerGespeeldeKaart4.setIcon(cardImageIcon);
                }
            }
        }

        for (int i = playerSelf.getAantalKaartenGespeeld(); i < 4; i++)
        {
            ImageIcon cardImageIcon = new ImageIcon(getCardImagePath("leeg.png"));

            switch(i)
            {
                case 0:
                {
                    spelerGespeeldeKaart1.setIcon(cardImageIcon);
                }
                case 1:
                {
                    spelerGespeeldeKaart2.setIcon(cardImageIcon);
                }
                case 2:
                {
                    spelerGespeeldeKaart3.setIcon(cardImageIcon);
                }
                case 3:
                {
                    spelerGespeeldeKaart4.setIcon(cardImageIcon);
                }
            }
        }
        setStatus(playerSelf.getNaam(), playerSelf.getStrafPunten(), playerSelf.getInzet() , playerSelf.getIsAanBeurt(), playerSelf.getIsAanBeurt() ? "Is aan de beurt" : "Wacht op andere speler.");
        enableButtons(playerSelf.getIsAanBeurt());
    }

    private void enableButtons(boolean isAanDeBeurt)
    {
        spelerKaart1.setEnabled(isAanDeBeurt);
        spelerKaart2.setEnabled(isAanDeBeurt);
        spelerKaart3.setEnabled(isAanDeBeurt);
        spelerKaart4.setEnabled(isAanDeBeurt);
        butKloppen.setEnabled(isAanDeBeurt);
        butPassen.setEnabled(isAanDeBeurt);
        try
        {
           if (spelFacade.getKlopperNaam().length() > 0 && isAanDeBeurt )
            {
                int j = showKlopDialog(spelFacade.getKlopperNaam());
                switch(j)
                {
                    case 0:
                    {
                        meegaan();
                    }
                    case 1:
                    {
                        passen();
                    }
                    case 2:
                    {
                        kloppen();
                    }
                    case 99:
                    {
                        passen();
                    }
                }
            }
        }
        catch (Exception e)
        {
             e.printStackTrace();
        }
    }

    public void setStatus(String naam, int score, int inzet, boolean isTurn, String status)
    {
        Border newBorder = isTurn ? javax.swing.BorderFactory.createLineBorder(new java.awt.Color(200, 200, 200), 2) : javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 2);
        switch (getPlayerNumber(naam))
        {
            case 0:
                speler1Panel.setBorder(newBorder);
                player1Naam.setText(naam);
                player1Score.setText("" + score);
                player1Inzet.setText("" + inzet);
                player1Status.setText("" + status);
                break;
            case 1:
                speler2Panel.setBorder(newBorder);
                player2Naam.setText(naam);
                player2Score.setText("" + score);
                player2Inzet.setText("" + inzet);
                player2Status.setText("" + status);
                break;
            case 2:
                speler3Panel.setBorder(newBorder);
                player3Naam.setText(naam);
                player3Score.setText("" + score);
                player3Inzet.setText("" + inzet);
                player3Status.setText("" + status);
                break;
            default:
                spelerPanel.setBorder(newBorder);
                playerSelfName.setText(naam);
                playerSelfScore.setText("" + score);
                playerSelfInzet.setText("" + inzet);
                playerSelfStatus.setText("" + status);
                break;
        }
    }

    private java.net.URL getCardImagePath(FacadeKleur kleur, FacadeWaarde waarde)
    {
        return getCardImagePath(kleuren.get(kleur) +  waardes.get(waarde) + ".png");
    }

    private java.net.URL getCardImagePath(String imgName)
    {
        return GUIView.class.getResource("resources/"+imgName);
    }

    private int getPlayerNumber(String naam)
    {
        for (int i = 0; i < namen.length; i++)
        {
            if (namen[i] != null && namen[i].equals(naam)) {
                return i;
            }
        }

        return -1;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        speler1Panel = new javax.swing.JPanel();
        panGespeeld = new javax.swing.JPanel();
        speler1gespeeldeKaart1 = new javax.swing.JLabel();
        speler1gespeeldeKaart2 = new javax.swing.JLabel();
        speler1gespeeldeKaart3 = new javax.swing.JLabel();
        speler1gespeeldeKaart4 = new javax.swing.JLabel();
        jPanel5 = new javax.swing.JPanel();
        player1Naam = new javax.swing.JLabel();
        player1Inzet = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jLabel29 = new javax.swing.JLabel();
        player1Score = new javax.swing.JLabel();
        player1Status = new javax.swing.JLabel();
        panOngespeeld = new javax.swing.JPanel();
        speler1ongespeeldeKaart1 = new javax.swing.JLabel();
        speler1ongespeeldeKaart2 = new javax.swing.JLabel();
        speler1ongespeeldeKaart3 = new javax.swing.JLabel();
        speler1ongespeeldeKaart4 = new javax.swing.JLabel();
        speler2Panel = new javax.swing.JPanel();
        spelerHand2 = new javax.swing.JPanel();
        speler2ongespeeldeKaart1 = new javax.swing.JLabel();
        speler2ongespeeldeKaart4 = new javax.swing.JLabel();
        speler2ongespeeldeKaart3 = new javax.swing.JLabel();
        speler2ongespeeldeKaart2 = new javax.swing.JLabel();
        jPanel11 = new javax.swing.JPanel();
        player2Naam = new javax.swing.JLabel();
        player2Inzet = new javax.swing.JLabel();
        jLabel55 = new javax.swing.JLabel();
        jLabel56 = new javax.swing.JLabel();
        jLabel57 = new javax.swing.JLabel();
        player2Score = new javax.swing.JLabel();
        player2Status = new javax.swing.JLabel();
        spelerHand5 = new javax.swing.JPanel();
        speler2GespeeldeKaart1 = new javax.swing.JLabel();
        speler2GespeeldeKaart4 = new javax.swing.JLabel();
        speler2GespeeldeKaart3 = new javax.swing.JLabel();
        speler2GespeeldeKaart2 = new javax.swing.JLabel();
        speler3Panel = new javax.swing.JPanel();
        otherPlayerHand3 = new javax.swing.JPanel();
        speler3ongespeeldeKaart1 = new javax.swing.JLabel();
        speler3ongespeeldeKaart2 = new javax.swing.JLabel();
        speler3ongespeeldeKaart3 = new javax.swing.JLabel();
        speler3ongespeeldeKaart4 = new javax.swing.JLabel();
        panGespeeld1 = new javax.swing.JPanel();
        speler3gespeeldeKaart1 = new javax.swing.JLabel();
        speler3gespeeldeKaart2 = new javax.swing.JLabel();
        speler3gespeeldeKaart3 = new javax.swing.JLabel();
        speler3gespeeldeKaart4 = new javax.swing.JLabel();
        jPanel12 = new javax.swing.JPanel();
        player3Naam = new javax.swing.JLabel();
        player3Inzet = new javax.swing.JLabel();
        jLabel62 = new javax.swing.JLabel();
        jLabel63 = new javax.swing.JLabel();
        jLabel64 = new javax.swing.JLabel();
        player3Score = new javax.swing.JLabel();
        player3Status = new javax.swing.JLabel();
        spelerPanel = new javax.swing.JPanel();
        spelerHand = new javax.swing.JPanel();
        spelerKaart1 = new javax.swing.JButton();
        spelerKaart2 = new javax.swing.JButton();
        spelerKaart3 = new javax.swing.JButton();
        spelerKaart4 = new javax.swing.JButton();
        spelerHand4 = new javax.swing.JPanel();
        spelerGespeeldeKaart1 = new javax.swing.JLabel();
        spelerGespeeldeKaart4 = new javax.swing.JLabel();
        spelerGespeeldeKaart3 = new javax.swing.JLabel();
        spelerGespeeldeKaart2 = new javax.swing.JLabel();
        jPanel10 = new javax.swing.JPanel();
        playerSelfName = new javax.swing.JLabel();
        playerSelfInzet = new javax.swing.JLabel();
        jLabel48 = new javax.swing.JLabel();
        jLabel49 = new javax.swing.JLabel();
        jLabel50 = new javax.swing.JLabel();
        playerSelfScore = new javax.swing.JLabel();
        playerSelfStatus = new javax.swing.JLabel();
        butKloppen = new javax.swing.JButton();
        butPassen = new javax.swing.JButton();
        butDelen = new javax.swing.JButton();
        menuBar = new javax.swing.JMenuBar();
        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
        startMenuItem = new javax.swing.JMenuItem();
        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
        statusPanel = new javax.swing.JPanel();
        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
        statusMessageLabel = new javax.swing.JLabel();
        statusAnimationLabel = new javax.swing.JLabel();
        progressBar = new javax.swing.JProgressBar();
        jButton1 = new javax.swing.JButton();

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(gui.GUIApp.class).getContext().getResourceMap(GUIView.class);
        mainPanel.setBackground(resourceMap.getColor("mainPanel.background")); // NOI18N
        mainPanel.setMaximumSize(new java.awt.Dimension(961, 614));
        mainPanel.setMinimumSize(new java.awt.Dimension(961, 614));
        mainPanel.setName("mainPanel"); // NOI18N

        speler1Panel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 2));
        speler1Panel.setMaximumSize(new java.awt.Dimension(216, 500));
        speler1Panel.setMinimumSize(new java.awt.Dimension(216, 500));
        speler1Panel.setName("speler1Panel"); // NOI18N
        speler1Panel.setOpaque(false);
        speler1Panel.setPreferredSize(new java.awt.Dimension(216, 578));

        panGespeeld.setName("panGespeeld"); // NOI18N
        panGespeeld.setOpaque(false);

        speler1gespeeldeKaart1.setIcon(resourceMap.getIcon("speler1gespeeldeKaart1.icon")); // NOI18N
        speler1gespeeldeKaart1.setName("speler1gespeeldeKaart1"); // NOI18N
        speler1gespeeldeKaart1.setOpaque(true);

        speler1gespeeldeKaart2.setIcon(resourceMap.getIcon("speler1gespeeldeKaart2.icon")); // NOI18N
        speler1gespeeldeKaart2.setName("speler1gespeeldeKaart2"); // NOI18N
        speler1gespeeldeKaart2.setOpaque(true);

        speler1gespeeldeKaart3.setIcon(resourceMap.getIcon("speler1gespeeldeKaart3.icon")); // NOI18N
        speler1gespeeldeKaart3.setName("speler1gespeeldeKaart3"); // NOI18N
        speler1gespeeldeKaart3.setOpaque(true);

        speler1gespeeldeKaart4.setIcon(resourceMap.getIcon("speler1gespeeldeKaart4.icon")); // NOI18N
        speler1gespeeldeKaart4.setName("speler1gespeeldeKaart4"); // NOI18N

        javax.swing.GroupLayout panGespeeldLayout = new javax.swing.GroupLayout(panGespeeld);
        panGespeeld.setLayout(panGespeeldLayout);
        panGespeeldLayout.setHorizontalGroup(
            panGespeeldLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panGespeeldLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panGespeeldLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler1gespeeldeKaart1)
                    .addComponent(speler1gespeeldeKaart2)
                    .addComponent(speler1gespeeldeKaart3)
                    .addComponent(speler1gespeeldeKaart4))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panGespeeldLayout.setVerticalGroup(
            panGespeeldLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panGespeeldLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(speler1gespeeldeKaart1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler1gespeeldeKaart2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler1gespeeldeKaart3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler1gespeeldeKaart4)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel5.setBackground(resourceMap.getColor("jPanel5.background")); // NOI18N
        jPanel5.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true));
        jPanel5.setAlignmentX(0.0F);
        jPanel5.setAlignmentY(0.0F);
        jPanel5.setName("jPanel5"); // NOI18N

        player1Naam.setText(resourceMap.getString("player1Naam.text")); // NOI18N
        player1Naam.setName("player1Naam"); // NOI18N

        player1Inzet.setText(resourceMap.getString("player1Inzet.text")); // NOI18N
        player1Inzet.setName("player1Inzet"); // NOI18N

        jLabel11.setText(resourceMap.getString("jLabel11.text")); // NOI18N
        jLabel11.setName("jLabel11"); // NOI18N

        jLabel12.setText(resourceMap.getString("jLabel12.text")); // NOI18N
        jLabel12.setName("jLabel12"); // NOI18N

        jLabel29.setText(resourceMap.getString("jLabel29.text")); // NOI18N
        jLabel29.setName("jLabel29"); // NOI18N

        player1Score.setText(resourceMap.getString("player1Score.text")); // NOI18N
        player1Score.setName("player1Score"); // NOI18N

        player1Status.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        player1Status.setText(resourceMap.getString("player1Status.text")); // NOI18N
        player1Status.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        player1Status.setName("player1Status"); // NOI18N

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(player1Status, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)
                    .addGroup(jPanel5Layout.createSequentialGroup()
                        .addComponent(jLabel12)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player1Inzet))
                    .addGroup(jPanel5Layout.createSequentialGroup()
                        .addComponent(jLabel11)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player1Naam))
                    .addGroup(jPanel5Layout.createSequentialGroup()
                        .addComponent(jLabel29)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player1Score)))
                .addContainerGap())
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel11)
                    .addComponent(player1Naam))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(player1Inzet)
                    .addComponent(jLabel12))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel29)
                    .addComponent(player1Score))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(player1Status)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        panOngespeeld.setName("panOngespeeld"); // NOI18N
        panOngespeeld.setOpaque(false);

        speler1ongespeeldeKaart1.setIcon(resourceMap.getIcon("speler1ongespeeldeKaart1.icon")); // NOI18N
        speler1ongespeeldeKaart1.setText(resourceMap.getString("speler1ongespeeldeKaart1.text")); // NOI18N
        speler1ongespeeldeKaart1.setName("speler1ongespeeldeKaart1"); // NOI18N

        speler1ongespeeldeKaart2.setIcon(resourceMap.getIcon("speler1ongespeeldeKaart2.icon")); // NOI18N
        speler1ongespeeldeKaart2.setText(resourceMap.getString("speler1ongespeeldeKaart2.text")); // NOI18N
        speler1ongespeeldeKaart2.setName("speler1ongespeeldeKaart2"); // NOI18N

        speler1ongespeeldeKaart3.setIcon(resourceMap.getIcon("speler1ongespeeldeKaart3.icon")); // NOI18N
        speler1ongespeeldeKaart3.setText(resourceMap.getString("speler1ongespeeldeKaart3.text")); // NOI18N
        speler1ongespeeldeKaart3.setName("speler1ongespeeldeKaart3"); // NOI18N

        speler1ongespeeldeKaart4.setIcon(resourceMap.getIcon("speler1ongespeeldeKaart4.icon")); // NOI18N
        speler1ongespeeldeKaart4.setText(resourceMap.getString("speler1ongespeeldeKaart4.text")); // NOI18N
        speler1ongespeeldeKaart4.setName("speler1ongespeeldeKaart4"); // NOI18N

        javax.swing.GroupLayout panOngespeeldLayout = new javax.swing.GroupLayout(panOngespeeld);
        panOngespeeld.setLayout(panOngespeeldLayout);
        panOngespeeldLayout.setHorizontalGroup(
            panOngespeeldLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panOngespeeldLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panOngespeeldLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler1ongespeeldeKaart1)
                    .addComponent(speler1ongespeeldeKaart2)
                    .addComponent(speler1ongespeeldeKaart3)
                    .addComponent(speler1ongespeeldeKaart4))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panOngespeeldLayout.setVerticalGroup(
            panOngespeeldLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panOngespeeldLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(speler1ongespeeldeKaart1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler1ongespeeldeKaart2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler1ongespeeldeKaart3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler1ongespeeldeKaart4)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout speler1PanelLayout = new javax.swing.GroupLayout(speler1Panel);
        speler1Panel.setLayout(speler1PanelLayout);
        speler1PanelLayout.setHorizontalGroup(
            speler1PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(speler1PanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(speler1PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(speler1PanelLayout.createSequentialGroup()
                        .addComponent(panOngespeeld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(panGespeeld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        speler1PanelLayout.setVerticalGroup(
            speler1PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, speler1PanelLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(speler1PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panOngespeeld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(panGespeeld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(444, 444, 444))
        );

        speler2Panel.setBorder(javax.swing.BorderFactory.createLineBorder(null, 2));
        speler2Panel.setMaximumSize(new java.awt.Dimension(497, 272));
        speler2Panel.setMinimumSize(new java.awt.Dimension(497, 272));
        speler2Panel.setName("speler2Panel"); // NOI18N
        speler2Panel.setOpaque(false);
        speler2Panel.setPreferredSize(new java.awt.Dimension(497, 272));

        spelerHand2.setName("spelerHand2"); // NOI18N
        spelerHand2.setOpaque(false);

        speler2ongespeeldeKaart1.setIcon(resourceMap.getIcon("speler2ongespeeldeKaart1.icon")); // NOI18N
        speler2ongespeeldeKaart1.setName("speler2ongespeeldeKaart1"); // NOI18N

        speler2ongespeeldeKaart4.setIcon(resourceMap.getIcon("speler2ongespeeldeKaart4.icon")); // NOI18N
        speler2ongespeeldeKaart4.setName("speler2ongespeeldeKaart4"); // NOI18N

        speler2ongespeeldeKaart3.setIcon(resourceMap.getIcon("speler2ongespeeldeKaart3.icon")); // NOI18N
        speler2ongespeeldeKaart3.setName("speler2ongespeeldeKaart3"); // NOI18N

        speler2ongespeeldeKaart2.setIcon(resourceMap.getIcon("speler2ongespeeldeKaart2.icon")); // NOI18N
        speler2ongespeeldeKaart2.setName("speler2ongespeeldeKaart2"); // NOI18N

        javax.swing.GroupLayout spelerHand2Layout = new javax.swing.GroupLayout(spelerHand2);
        spelerHand2.setLayout(spelerHand2Layout);
        spelerHand2Layout.setHorizontalGroup(
            spelerHand2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHand2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(speler2ongespeeldeKaart1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(speler2ongespeeldeKaart2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(speler2ongespeeldeKaart3)
                .addGap(6, 6, 6)
                .addComponent(speler2ongespeeldeKaart4)
                .addContainerGap(294, Short.MAX_VALUE))
        );
        spelerHand2Layout.setVerticalGroup(
            spelerHand2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHand2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(spelerHand2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler2ongespeeldeKaart4)
                    .addComponent(speler2ongespeeldeKaart2)
                    .addComponent(speler2ongespeeldeKaart1)
                    .addComponent(speler2ongespeeldeKaart3))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel11.setBackground(resourceMap.getColor("jPanel11.background")); // NOI18N
        jPanel11.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true));
        jPanel11.setAlignmentX(0.0F);
        jPanel11.setAlignmentY(0.0F);
        jPanel11.setName("jPanel11"); // NOI18N

        player2Naam.setText(resourceMap.getString("player2Naam.text")); // NOI18N
        player2Naam.setName("player2Naam"); // NOI18N

        player2Inzet.setText(resourceMap.getString("player2Inzet.text")); // NOI18N
        player2Inzet.setName("player2Inzet"); // NOI18N

        jLabel55.setText(resourceMap.getString("jLabel55.text")); // NOI18N
        jLabel55.setName("jLabel55"); // NOI18N

        jLabel56.setText(resourceMap.getString("jLabel56.text")); // NOI18N
        jLabel56.setName("jLabel56"); // NOI18N

        jLabel57.setText(resourceMap.getString("jLabel57.text")); // NOI18N
        jLabel57.setName("jLabel57"); // NOI18N

        player2Score.setText(resourceMap.getString("player2Score.text")); // NOI18N
        player2Score.setName("player2Score"); // NOI18N

        player2Status.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        player2Status.setText(resourceMap.getString("player2Status.text")); // NOI18N
        player2Status.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        player2Status.setName("player2Status"); // NOI18N

        javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11);
        jPanel11.setLayout(jPanel11Layout);
        jPanel11Layout.setHorizontalGroup(
            jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel11Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(player2Status, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)
                    .addGroup(jPanel11Layout.createSequentialGroup()
                        .addComponent(jLabel56)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player2Inzet))
                    .addGroup(jPanel11Layout.createSequentialGroup()
                        .addComponent(jLabel55)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player2Naam))
                    .addGroup(jPanel11Layout.createSequentialGroup()
                        .addComponent(jLabel57)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player2Score)))
                .addContainerGap())
        );
        jPanel11Layout.setVerticalGroup(
            jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel11Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel55)
                    .addComponent(player2Naam))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(player2Inzet)
                    .addComponent(jLabel56))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel57)
                    .addComponent(player2Score))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(player2Status)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        spelerHand5.setMaximumSize(new java.awt.Dimension(322, 118));
        spelerHand5.setMinimumSize(new java.awt.Dimension(322, 118));
        spelerHand5.setName("spelerHand5"); // NOI18N
        spelerHand5.setOpaque(false);

        speler2GespeeldeKaart1.setIcon(resourceMap.getIcon("speler2GespeeldeKaart1.icon")); // NOI18N
        speler2GespeeldeKaart1.setName("speler2GespeeldeKaart1"); // NOI18N
        speler2GespeeldeKaart1.setOpaque(true);

        speler2GespeeldeKaart4.setIcon(resourceMap.getIcon("speler2GespeeldeKaart4.icon")); // NOI18N
        speler2GespeeldeKaart4.setName("speler2GespeeldeKaart4"); // NOI18N
        speler2GespeeldeKaart4.setOpaque(true);

        speler2GespeeldeKaart3.setIcon(resourceMap.getIcon("speler2GespeeldeKaart3.icon")); // NOI18N
        speler2GespeeldeKaart3.setName("speler2GespeeldeKaart3"); // NOI18N
        speler2GespeeldeKaart3.setOpaque(true);

        speler2GespeeldeKaart2.setIcon(resourceMap.getIcon("speler2GespeeldeKaart2.icon")); // NOI18N
        speler2GespeeldeKaart2.setName("speler2GespeeldeKaart2"); // NOI18N
        speler2GespeeldeKaart2.setOpaque(true);

        javax.swing.GroupLayout spelerHand5Layout = new javax.swing.GroupLayout(spelerHand5);
        spelerHand5.setLayout(spelerHand5Layout);
        spelerHand5Layout.setHorizontalGroup(
            spelerHand5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHand5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(speler2GespeeldeKaart1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(speler2GespeeldeKaart2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(speler2GespeeldeKaart3)
                .addGap(6, 6, 6)
                .addComponent(speler2GespeeldeKaart4)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        spelerHand5Layout.setVerticalGroup(
            spelerHand5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHand5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(spelerHand5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler2GespeeldeKaart4)
                    .addComponent(speler2GespeeldeKaart2)
                    .addComponent(speler2GespeeldeKaart1)
                    .addComponent(speler2GespeeldeKaart3))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout speler2PanelLayout = new javax.swing.GroupLayout(speler2Panel);
        speler2Panel.setLayout(speler2PanelLayout);
        speler2PanelLayout.setHorizontalGroup(
            speler2PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, speler2PanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(speler2PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(speler2PanelLayout.createSequentialGroup()
                        .addComponent(spelerHand5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, speler2PanelLayout.createSequentialGroup()
                        .addComponent(spelerHand2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())))
        );
        speler2PanelLayout.setVerticalGroup(
            speler2PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(speler2PanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(speler2PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(spelerHand2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(11, 11, 11)
                .addComponent(spelerHand5, javax.swing.GroupLayout.PREFERRED_SIZE, 117, Short.MAX_VALUE)
                .addContainerGap())
        );

        speler3Panel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 2));
        speler3Panel.setMaximumSize(new java.awt.Dimension(216, 578));
        speler3Panel.setMinimumSize(new java.awt.Dimension(216, 578));
        speler3Panel.setName("speler3Panel"); // NOI18N
        speler3Panel.setOpaque(false);
        speler3Panel.setPreferredSize(new java.awt.Dimension(216, 578));

        otherPlayerHand3.setName("otherPlayerHand3"); // NOI18N
        otherPlayerHand3.setOpaque(false);
        otherPlayerHand3.setPreferredSize(new java.awt.Dimension(99, 425));

        speler3ongespeeldeKaart1.setIcon(resourceMap.getIcon("speler3ongespeeldeKaart1.icon")); // NOI18N
        speler3ongespeeldeKaart1.setName("speler3ongespeeldeKaart1"); // NOI18N

        speler3ongespeeldeKaart2.setIcon(resourceMap.getIcon("speler3ongespeeldeKaart2.icon")); // NOI18N
        speler3ongespeeldeKaart2.setName("speler3ongespeeldeKaart2"); // NOI18N

        speler3ongespeeldeKaart3.setIcon(resourceMap.getIcon("speler3ongespeeldeKaart3.icon")); // NOI18N
        speler3ongespeeldeKaart3.setName("speler3ongespeeldeKaart3"); // NOI18N

        speler3ongespeeldeKaart4.setIcon(resourceMap.getIcon("speler3ongespeeldeKaart4.icon")); // NOI18N
        speler3ongespeeldeKaart4.setName("speler3ongespeeldeKaart4"); // NOI18N

        javax.swing.GroupLayout otherPlayerHand3Layout = new javax.swing.GroupLayout(otherPlayerHand3);
        otherPlayerHand3.setLayout(otherPlayerHand3Layout);
        otherPlayerHand3Layout.setHorizontalGroup(
            otherPlayerHand3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(otherPlayerHand3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(otherPlayerHand3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler3ongespeeldeKaart1)
                    .addComponent(speler3ongespeeldeKaart3)
                    .addComponent(speler3ongespeeldeKaart2)
                    .addComponent(speler3ongespeeldeKaart4))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        otherPlayerHand3Layout.setVerticalGroup(
            otherPlayerHand3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(otherPlayerHand3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(speler3ongespeeldeKaart1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler3ongespeeldeKaart2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler3ongespeeldeKaart3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler3ongespeeldeKaart4)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        panGespeeld1.setName("panGespeeld1"); // NOI18N
        panGespeeld1.setOpaque(false);

        speler3gespeeldeKaart1.setIcon(resourceMap.getIcon("speler3gespeeldeKaart1.icon")); // NOI18N
        speler3gespeeldeKaart1.setName("speler3gespeeldeKaart1"); // NOI18N
        speler3gespeeldeKaart1.setOpaque(true);

        speler3gespeeldeKaart2.setIcon(resourceMap.getIcon("speler3gespeeldeKaart2.icon")); // NOI18N
        speler3gespeeldeKaart2.setName("speler3gespeeldeKaart2"); // NOI18N
        speler3gespeeldeKaart2.setOpaque(true);

        speler3gespeeldeKaart3.setIcon(resourceMap.getIcon("speler3gespeeldeKaart3.icon")); // NOI18N
        speler3gespeeldeKaart3.setName("speler3gespeeldeKaart3"); // NOI18N
        speler3gespeeldeKaart3.setOpaque(true);

        speler3gespeeldeKaart4.setIcon(resourceMap.getIcon("speler3gespeeldeKaart4.icon")); // NOI18N
        speler3gespeeldeKaart4.setName("speler3gespeeldeKaart4"); // NOI18N

        javax.swing.GroupLayout panGespeeld1Layout = new javax.swing.GroupLayout(panGespeeld1);
        panGespeeld1.setLayout(panGespeeld1Layout);
        panGespeeld1Layout.setHorizontalGroup(
            panGespeeld1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panGespeeld1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panGespeeld1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler3gespeeldeKaart1)
                    .addComponent(speler3gespeeldeKaart2)
                    .addComponent(speler3gespeeldeKaart3)
                    .addComponent(speler3gespeeldeKaart4))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panGespeeld1Layout.setVerticalGroup(
            panGespeeld1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panGespeeld1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(speler3gespeeldeKaart1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler3gespeeldeKaart2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler3gespeeldeKaart3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(speler3gespeeldeKaart4)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel12.setBackground(resourceMap.getColor("jPanel12.background")); // NOI18N
        jPanel12.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true));
        jPanel12.setAlignmentX(0.0F);
        jPanel12.setAlignmentY(0.0F);
        jPanel12.setName("jPanel12"); // NOI18N

        player3Naam.setText(resourceMap.getString("player3Naam.text")); // NOI18N
        player3Naam.setName("player3Naam"); // NOI18N

        player3Inzet.setText(resourceMap.getString("player3Inzet.text")); // NOI18N
        player3Inzet.setName("player3Inzet"); // NOI18N

        jLabel62.setText(resourceMap.getString("jLabel62.text")); // NOI18N
        jLabel62.setName("jLabel62"); // NOI18N

        jLabel63.setText(resourceMap.getString("jLabel63.text")); // NOI18N
        jLabel63.setName("jLabel63"); // NOI18N

        jLabel64.setText(resourceMap.getString("jLabel64.text")); // NOI18N
        jLabel64.setName("jLabel64"); // NOI18N

        player3Score.setText(resourceMap.getString("player3Score.text")); // NOI18N
        player3Score.setName("player3Score"); // NOI18N

        player3Status.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        player3Status.setText(resourceMap.getString("player3Status.text")); // NOI18N
        player3Status.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        player3Status.setName("player3Status"); // NOI18N

        javax.swing.GroupLayout jPanel12Layout = new javax.swing.GroupLayout(jPanel12);
        jPanel12.setLayout(jPanel12Layout);
        jPanel12Layout.setHorizontalGroup(
            jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel12Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(player3Status, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)
                    .addGroup(jPanel12Layout.createSequentialGroup()
                        .addComponent(jLabel63)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player3Inzet))
                    .addGroup(jPanel12Layout.createSequentialGroup()
                        .addComponent(jLabel62)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player3Naam))
                    .addGroup(jPanel12Layout.createSequentialGroup()
                        .addComponent(jLabel64)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(player3Score)))
                .addContainerGap())
        );
        jPanel12Layout.setVerticalGroup(
            jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel12Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel62)
                    .addComponent(player3Naam))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(player3Inzet)
                    .addComponent(jLabel63))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel64)
                    .addComponent(player3Score))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(player3Status)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout speler3PanelLayout = new javax.swing.GroupLayout(speler3Panel);
        speler3Panel.setLayout(speler3PanelLayout);
        speler3PanelLayout.setHorizontalGroup(
            speler3PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(speler3PanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panGespeeld1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(otherPlayerHand3, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(14, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, speler3PanelLayout.createSequentialGroup()
                .addContainerGap(54, Short.MAX_VALUE)
                .addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        speler3PanelLayout.setVerticalGroup(
            speler3PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(speler3PanelLayout.createSequentialGroup()
                .addGap(6, 6, 6)
                .addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(speler3PanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panGespeeld1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(otherPlayerHand3, javax.swing.GroupLayout.PREFERRED_SIZE, 439, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(18, Short.MAX_VALUE))
        );

        spelerPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 2));
        spelerPanel.setMaximumSize(new java.awt.Dimension(497, 272));
        spelerPanel.setMinimumSize(new java.awt.Dimension(497, 272));
        spelerPanel.setName("spelerPanel"); // NOI18N
        spelerPanel.setOpaque(false);
        spelerPanel.setPreferredSize(new java.awt.Dimension(497, 272));

        spelerHand.setName("playerCards"); // NOI18N
        spelerHand.setOpaque(false);

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(gui.GUIApp.class).getContext().getActionMap(GUIView.class, this);
        spelerKaart1.setAction(actionMap.get("playCard1")); // NOI18N
        spelerKaart1.setIcon(resourceMap.getIcon("spelerKaart1.icon")); // NOI18N
        spelerKaart1.setText(resourceMap.getString("spelerKaart1.text")); // NOI18N
        spelerKaart1.setBorderPainted(false);
        spelerKaart1.setContentAreaFilled(false);
        spelerKaart1.setName("spelerKaart1"); // NOI18N

        spelerKaart2.setAction(actionMap.get("playCard2")); // NOI18N
        spelerKaart2.setBorderPainted(false);
        spelerKaart2.setContentAreaFilled(false);
        spelerKaart2.setName("spelerKaart2"); // NOI18N

        spelerKaart3.setAction(actionMap.get("playCard3")); // NOI18N
        spelerKaart3.setBorderPainted(false);
        spelerKaart3.setContentAreaFilled(false);
        spelerKaart3.setName("spelerKaart3"); // NOI18N

        spelerKaart4.setAction(actionMap.get("playCard4")); // NOI18N
        spelerKaart4.setBorderPainted(false);
        spelerKaart4.setContentAreaFilled(false);
        spelerKaart4.setName("spelerKaart4"); // NOI18N

        javax.swing.GroupLayout spelerHandLayout = new javax.swing.GroupLayout(spelerHand);
        spelerHand.setLayout(spelerHandLayout);
        spelerHandLayout.setHorizontalGroup(
            spelerHandLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHandLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(spelerKaart1, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(spelerKaart2, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(spelerKaart3, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(spelerKaart4, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        spelerHandLayout.setVerticalGroup(
            spelerHandLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHandLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(spelerHandLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(spelerKaart4, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(spelerKaart3, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(spelerKaart2, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(spelerKaart1, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        spelerHand4.setMaximumSize(new java.awt.Dimension(322, 118));
        spelerHand4.setMinimumSize(new java.awt.Dimension(322, 118));
        spelerHand4.setName("spelerHand4"); // NOI18N
        spelerHand4.setOpaque(false);

        spelerGespeeldeKaart1.setIcon(resourceMap.getIcon("spelerGespeeldeKaart3.icon")); // NOI18N
        spelerGespeeldeKaart1.setName("spelerGespeeldeKaart1"); // NOI18N
        spelerGespeeldeKaart1.setOpaque(true);

        spelerGespeeldeKaart4.setIcon(resourceMap.getIcon("spelerGespeeldeKaart3.icon")); // NOI18N
        spelerGespeeldeKaart4.setName("spelerGespeeldeKaart4"); // NOI18N
        spelerGespeeldeKaart4.setOpaque(true);

        spelerGespeeldeKaart3.setIcon(resourceMap.getIcon("spelerGespeeldeKaart3.icon")); // NOI18N
        spelerGespeeldeKaart3.setName("spelerGespeeldeKaart3"); // NOI18N
        spelerGespeeldeKaart3.setOpaque(true);

        spelerGespeeldeKaart2.setIcon(resourceMap.getIcon("spelerGespeeldeKaart3.icon")); // NOI18N
        spelerGespeeldeKaart2.setName("spelerGespeeldeKaart2"); // NOI18N
        spelerGespeeldeKaart2.setOpaque(true);

        javax.swing.GroupLayout spelerHand4Layout = new javax.swing.GroupLayout(spelerHand4);
        spelerHand4.setLayout(spelerHand4Layout);
        spelerHand4Layout.setHorizontalGroup(
            spelerHand4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHand4Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(spelerGespeeldeKaart1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(spelerGespeeldeKaart2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(spelerGespeeldeKaart3)
                .addGap(6, 6, 6)
                .addComponent(spelerGespeeldeKaart4)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        spelerHand4Layout.setVerticalGroup(
            spelerHand4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerHand4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(spelerHand4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(spelerGespeeldeKaart4)
                    .addComponent(spelerGespeeldeKaart2)
                    .addComponent(spelerGespeeldeKaart1)
                    .addComponent(spelerGespeeldeKaart3))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel10.setBackground(resourceMap.getColor("jPanel10.background")); // NOI18N
        jPanel10.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true));
        jPanel10.setAlignmentX(0.0F);
        jPanel10.setAlignmentY(0.0F);
        jPanel10.setName("jPanel10"); // NOI18N

        playerSelfName.setText(resourceMap.getString("playerSelfName.text")); // NOI18N
        playerSelfName.setName("playerSelfName"); // NOI18N

        playerSelfInzet.setText(resourceMap.getString("playerSelfInzet.text")); // NOI18N
        playerSelfInzet.setName("playerSelfInzet"); // NOI18N

        jLabel48.setText(resourceMap.getString("jLabel48.text")); // NOI18N
        jLabel48.setName("jLabel48"); // NOI18N

        jLabel49.setText(resourceMap.getString("jLabel49.text")); // NOI18N
        jLabel49.setName("jLabel49"); // NOI18N

        jLabel50.setText(resourceMap.getString("jLabel50.text")); // NOI18N
        jLabel50.setName("jLabel50"); // NOI18N

        playerSelfScore.setText(resourceMap.getString("playerSelfScore.text")); // NOI18N
        playerSelfScore.setName("playerSelfScore"); // NOI18N

        playerSelfStatus.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        playerSelfStatus.setText(resourceMap.getString("playerSelfStatus.text")); // NOI18N
        playerSelfStatus.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        playerSelfStatus.setName("playerSelfStatus"); // NOI18N

        javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10);
        jPanel10.setLayout(jPanel10Layout);
        jPanel10Layout.setHorizontalGroup(
            jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel10Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(playerSelfStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)
                    .addGroup(jPanel10Layout.createSequentialGroup()
                        .addComponent(jLabel49)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(playerSelfInzet))
                    .addGroup(jPanel10Layout.createSequentialGroup()
                        .addComponent(jLabel48)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(playerSelfName))
                    .addGroup(jPanel10Layout.createSequentialGroup()
                        .addComponent(jLabel50)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(playerSelfScore)))
                .addContainerGap())
        );
        jPanel10Layout.setVerticalGroup(
            jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel10Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel48)
                    .addComponent(playerSelfName))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(playerSelfInzet)
                    .addComponent(jLabel49))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel50)
                    .addComponent(playerSelfScore))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(playerSelfStatus)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        butKloppen.setAction(actionMap.get("kloppen")); // NOI18N
        butKloppen.setName("btnKloppen"); // NOI18N

        butPassen.setAction(actionMap.get("passen")); // NOI18N
        butPassen.setName("btnPassen"); // NOI18N

        butDelen.setAction(actionMap.get("delen")); // NOI18N
        butDelen.setName("butDelen"); // NOI18N

        javax.swing.GroupLayout spelerPanelLayout = new javax.swing.GroupLayout(spelerPanel);
        spelerPanel.setLayout(spelerPanelLayout);
        spelerPanelLayout.setHorizontalGroup(
            spelerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(spelerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(spelerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(butDelen, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(butPassen, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(butKloppen, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)))
                .addGap(3, 3, 3)
                .addGroup(spelerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(spelerHand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(spelerHand4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        spelerPanelLayout.setVerticalGroup(
            spelerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spelerPanelLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(spelerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(spelerHand4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(spelerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(spelerPanelLayout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(spelerHand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, spelerPanelLayout.createSequentialGroup()
                        .addGap(22, 22, 22)
                        .addComponent(butKloppen, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(butDelen)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(butPassen, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(158, 158, 158))
        );

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(speler1Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(6, 6, 6)
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler2Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(spelerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(speler3Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(343, Short.MAX_VALUE))
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(speler3Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addGroup(mainPanelLayout.createSequentialGroup()
                            .addComponent(speler2Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(spelerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addComponent(speler1Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(95, Short.MAX_VALUE))
        );

        menuBar.setName("menuBar"); // NOI18N

        fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
        fileMenu.setName("fileMenu"); // NOI18N

        startMenuItem.setText(resourceMap.getString("startMenuItem.text")); // NOI18N
        startMenuItem.setName("startMenuItem"); // NOI18N
        startMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                startMenuItemActionPerformed(evt);
            }
        });
        fileMenu.add(startMenuItem);

        exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
        exitMenuItem.setName("exitMenuItem"); // NOI18N
        fileMenu.add(exitMenuItem);

        menuBar.add(fileMenu);

        statusPanel.setName("statusPanel"); // NOI18N

        statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N

        statusMessageLabel.setName("statusMessageLabel"); // NOI18N

        statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

        progressBar.setName("progressBar"); // NOI18N

        javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
        statusPanel.setLayout(statusPanelLayout);
        statusPanelLayout.setHorizontalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 1294, Short.MAX_VALUE)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(statusMessageLabel)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 1120, Short.MAX_VALUE)
                .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(statusAnimationLabel)
                .addContainerGap())
        );
        statusPanelLayout.setVerticalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(statusMessageLabel)
                    .addComponent(statusAnimationLabel)
                    .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(3, 3, 3))
        );

        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
        jButton1.setName("jButton1"); // NOI18N

        setComponent(mainPanel);
        setMenuBar(menuBar);
        setStatusBar(statusPanel);
    }// </editor-fold>//GEN-END:initComponents

    private void startMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startMenuItemActionPerformed
        // TODO add your handling code here:
        try {
            spelFacade.startSpel();
        }
        catch (Exception e) {
	        e.printStackTrace();
        }
    }//GEN-LAST:event_startMenuItemActionPerformed

    @Action
    public void playCard1() {
        if (!spelerKaart1.getIcon().toString().contains("leeg"))
        {
            if (speelKaart(spelerKaarten[0]))
            {
                //spelerKaart1.setIcon(new ImageIcon(getCardImagePath("leeg.png")));
            }
        }
    }    
    
    @Action
    public void playCard2() {
        if (!spelerKaart2.getIcon().toString().contains("leeg"))
        {
            if (speelKaart(spelerKaarten[1]))
            {
                //spelerKaart2.setIcon(new ImageIcon(getCardImagePath("leeg.png")));
            }
        }
    }    
    
    @Action
    public void playCard3() {
        if (!spelerKaart3.getIcon().toString().contains("leeg"))
        {
            if (speelKaart(spelerKaarten[2]))
            {
                //spelerKaart3.setIcon(new ImageIcon(getCardImagePath("leeg.png")));
            }
        }
    }    
    
    @Action
    public void playCard4() {
        if (!spelerKaart4.getIcon().toString().contains("leeg"))
        {
            if (speelKaart(spelerKaarten[3]))
            {
                //spelerKaart4.setIcon(new ImageIcon(getCardImagePath("leeg.png")));
            }
        }
    }

    public int showKlopDialog (String klopper) {
        try
        {
            return JOptionPane.showOptionDialog(null, "Speler " + klopper + " heeft geklopt, wat wil je doen?", "Klopronde", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, new Object[]{"Meegaan", "Passen", "(over) Kloppen"}, "Meegaan");
        }
        catch (Exception e)
        {
	        e.printStackTrace();
            return 99;
        }
    }


    @Action public void quit() {
        try {
            quitter = true;
            spelFacade.stopSpel();
        }
        catch (Exception ex) {

        }
    }

    @Action
    public void kloppen() {
     //   ActieResult result=null;
        try {
            spelFacade.kloppen(gebruiker);
        }
        catch (Exception e) {
	        e.printStackTrace();
        }
     //   return (result.getResult() == ActieResultEnum.KLOPPEN);
    }

 @Action
    public void meegaan()
    {
    //    ActieResult result=null;
        try
        {
            spelFacade.meegaan(gebruiker);
        }
        catch (Exception e)
        {
	        e.printStackTrace();
        }
     //   return (result.getResult() == ActieResultEnum.MEEGAAN);
    }

    @Action
    public void passen()
    {
    //    ActieResult result=null;
        try
        {
            spelFacade.passen(gebruiker);
        }
        catch (Exception e)
        {
	        e.printStackTrace();
        }
    //    return (result.getResult() == ActieResultEnum.PASSEN);
    }

    @Action
    public void delen()
    {
    //    ActieResult result=null;
        try
        {
           spelFacade.delen(gebruiker);
        }
        catch (Exception e)
        {
	        e.printStackTrace();
        }
    //    return (result.getResult() == ActieResultEnum.PASSEN);
    }

    @Action
    private boolean speelKaart(FacadeKaart kaart)
    {
        ActieResult result=null;
        try
        {
            result = spelFacade.speelKaart(gebruiker, kaart);
        }
        catch (Exception e)
        {
	        e.printStackTrace();
        }
        return (result.getResult() == ActieResultEnum.OK);
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton butDelen;
    private javax.swing.JButton butKloppen;
    private javax.swing.JButton butPassen;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel29;
    private javax.swing.JLabel jLabel48;
    private javax.swing.JLabel jLabel49;
    private javax.swing.JLabel jLabel50;
    private javax.swing.JLabel jLabel55;
    private javax.swing.JLabel jLabel56;
    private javax.swing.JLabel jLabel57;
    private javax.swing.JLabel jLabel62;
    private javax.swing.JLabel jLabel63;
    private javax.swing.JLabel jLabel64;
    private javax.swing.JPanel jPanel10;
    private javax.swing.JPanel jPanel11;
    private javax.swing.JPanel jPanel12;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JPanel otherPlayerHand3;
    private javax.swing.JPanel panGespeeld;
    private javax.swing.JPanel panGespeeld1;
    private javax.swing.JPanel panOngespeeld;
    private javax.swing.JLabel player1Inzet;
    private javax.swing.JLabel player1Naam;
    private javax.swing.JLabel player1Score;
    private javax.swing.JLabel player1Status;
    private javax.swing.JLabel player2Inzet;
    private javax.swing.JLabel player2Naam;
    private javax.swing.JLabel player2Score;
    private javax.swing.JLabel player2Status;
    private javax.swing.JLabel player3Inzet;
    private javax.swing.JLabel player3Naam;
    private javax.swing.JLabel player3Score;
    private javax.swing.JLabel player3Status;
    private javax.swing.JLabel playerSelfInzet;
    private javax.swing.JLabel playerSelfName;
    private javax.swing.JLabel playerSelfScore;
    private javax.swing.JLabel playerSelfStatus;
    private javax.swing.JProgressBar progressBar;
    private javax.swing.JPanel speler1Panel;
    private javax.swing.JLabel speler1gespeeldeKaart1;
    private javax.swing.JLabel speler1gespeeldeKaart2;
    private javax.swing.JLabel speler1gespeeldeKaart3;
    private javax.swing.JLabel speler1gespeeldeKaart4;
    private javax.swing.JLabel speler1ongespeeldeKaart1;
    private javax.swing.JLabel speler1ongespeeldeKaart2;
    private javax.swing.JLabel speler1ongespeeldeKaart3;
    private javax.swing.JLabel speler1ongespeeldeKaart4;
    private javax.swing.JLabel speler2GespeeldeKaart1;
    private javax.swing.JLabel speler2GespeeldeKaart2;
    private javax.swing.JLabel speler2GespeeldeKaart3;
    private javax.swing.JLabel speler2GespeeldeKaart4;
    private javax.swing.JPanel speler2Panel;
    private javax.swing.JLabel speler2ongespeeldeKaart1;
    private javax.swing.JLabel speler2ongespeeldeKaart2;
    private javax.swing.JLabel speler2ongespeeldeKaart3;
    private javax.swing.JLabel speler2ongespeeldeKaart4;
    private javax.swing.JPanel speler3Panel;
    private javax.swing.JLabel speler3gespeeldeKaart1;
    private javax.swing.JLabel speler3gespeeldeKaart2;
    private javax.swing.JLabel speler3gespeeldeKaart3;
    private javax.swing.JLabel speler3gespeeldeKaart4;
    private javax.swing.JLabel speler3ongespeeldeKaart1;
    private javax.swing.JLabel speler3ongespeeldeKaart2;
    private javax.swing.JLabel speler3ongespeeldeKaart3;
    private javax.swing.JLabel speler3ongespeeldeKaart4;
    private javax.swing.JLabel spelerGespeeldeKaart1;
    private javax.swing.JLabel spelerGespeeldeKaart2;
    private javax.swing.JLabel spelerGespeeldeKaart3;
    private javax.swing.JLabel spelerGespeeldeKaart4;
    private javax.swing.JPanel spelerHand;
    private javax.swing.JPanel spelerHand2;
    private javax.swing.JPanel spelerHand4;
    private javax.swing.JPanel spelerHand5;
    private javax.swing.JButton spelerKaart1;
    private javax.swing.JButton spelerKaart2;
    private javax.swing.JButton spelerKaart3;
    private javax.swing.JButton spelerKaart4;
    private javax.swing.JPanel spelerPanel;
    private javax.swing.JMenuItem startMenuItem;
    private javax.swing.JLabel statusAnimationLabel;
    private javax.swing.JLabel statusMessageLabel;
    private javax.swing.JPanel statusPanel;
    // End of variables declaration//GEN-END:variables

    private final Timer messageTimer;
    private final Timer busyIconTimer;
    private final Icon idleIcon;
    private final Icon[] busyIcons = new Icon[15];
    private int busyIconIndex = 0;

    private JDialog aboutBox;
}
